package com.healthyeating.manage.service;

import java.util.List;
import java.util.Map;

import com.healthyeating.manage.domain.Activity;
import com.healthyeating.manage.domain.ActivityUser;
import com.healthyeating.manage.domain.TakePart;
import com.healthyeating.manage.domain.vo.ActivityUserVo;

/**
 * 活动Service接口
 * 
 * @author 段奇乐
 * @date 2025-04-12
 */
public interface IActivityService 
{
    /**
     * 查询活动
     * 
     * @param activityId 活动主键
     * @return 活动
     */
    public Activity selectActivityByActivityId(Long activityId);

    /**
     * 查询活动列表
     * 
     * @param activity 活动
     * @return 活动集合
     */
    public List<Activity> selectActivityList(Activity activity);

    /**
     * 新增活动
     * 
     * @param activity 活动
     * @return 结果
     */
    public int insertActivity(Activity activity);

    /**
     * 修改活动
     * 
     * @param activity 活动
     * @return 结果
     */
    public int updateActivity(Activity activity);

    /**
     * 批量删除活动
     * 
     * @param activityIds 需要删除的活动主键集合
     * @return 结果
     */
    public int deleteActivityByActivityIds(Long[] activityIds);

    /**
     * 删除活动信息
     * 
     * @param activityId 活动主键
     * @return 结果
     */
    public int deleteActivityByActivityId(Long activityId);

    /**
     * 查询用户参与活动记录
     * @param activityUser 活动参与记录
     * @return 用户参与记录集合
     */
    public Map<String ,Object> selectActivityUserList(ActivityUser activityUser);

    /**
     * 参与活动
     *
     * @param activityUser 活动参与记录
     * @return 结果
     */
    public int insertActivityUser(ActivityUser activityUser);

    /**
     * 打卡
     *
     * @param takePart 打卡信息
     * @return 结果
     */
    public int clockIn(TakePart takePart);

    /**
     * 批量退出参加活动
     *
     * @param activityUserIds 需要退出的活动主键集合
     * @return 结果
     */
    public int deleteActivityUserByActivityUserIds(Long[] activityUserIds);
}
